package com.xmindguoguo.boot.core.shiro.factroy;

import java.util.List;
import java.util.Set;

import org.apache.shiro.authc.SimpleAuthenticationInfo;

import com.xmindguoguo.boot.core.shiro.ShiroUser;
import com.xmindguoguo.boot.modular.system.model.TSystemUserModel;

/**
 * 定义shirorealm所需数据的接口
 *
 * @author fengshuonan
 * @date 2016年12月5日 上午10:23:34
 */
public interface IShiro {

    /**
     * 根据账号获取登录用户
     *
     * @param account
     *            账号
     */
    TSystemUserModel user(String account);

    /**
     * 根据系统用户获取Shiro的用户
     *
     * @param user
     *            系统用户
     */
    ShiroUser shiroUser(TSystemUserModel user);

    /**
     * 获取权限列表通过角色id
     *
     * @param roleId
     *            角色id
     */
    List<String> findPermissionsByRoleId(Long roleId);

    /**
     * 根据角色id获取角色名称
     *
     * @param roleId
     *            角色id
     */
    String findRoleNameByRoleId(Long roleId);

    /**
     * 获取shiro的认证信息
     */
    SimpleAuthenticationInfo info(ShiroUser shiroUser, TSystemUserModel user, String realmName);

    /**
     * 获取需要登录 但是不需要权限认证的集合
     * 
     * @Title findLoginNoPermissionSet
     * @author 于国帅
     * @date 2019年1月10日 上午11:33:23
     * @return Set<String>
     */
    Set<String> findLoginNoPermissionSet();

    /**
     * 获取需要登录需要权限认证的集合
     * 
     * @Title findLoginNoPermissionSet
     * @author 于国帅
     * @date 2019年1月10日 上午11:33:23
     * @return Set<String>
     */
    Set<String> findLoginAndPermissionSet();

    /**
     * 获取不需要权限
     * 
     * @Title findLoginNoPermissionSet
     * @author 于国帅
     * @date 2019年1月10日 上午11:33:23
     * @return Set<String>
     */
    Set<String> findNoLoginAndPermissionSet();

    /**
     * 获取所有的角色集合
     * 
     * @Title findRoleNameSet
     * @author 于国帅
     * @date 2019年2月13日 上午9:06:50
     * @return Set<String>
     */
    Set<String> findRoleNameSet();

}
